Add support for SSC_VERSION register on CSS platforms
authorVikram Kanigiri <[email protected]>
Thu, 12 Nov 2015 17:22:16 +0000 (17:22 +0000)
committerVikram Kanigiri <[email protected]>
Thu, 11 Feb 2016 17:04:02 +0000 (17:04 +0000)
Each ARM Compute Subsystem based platform implements a System Security
Control (SSC) Registers Unit. The SSC_VERSION register inside it carries
information to identify the platform. This enables ARM Trusted Firmware
to compile in support for multiple ARM platforms and choose one at
runtime. This patch adds macros to enable access to this register.
Each platform is expected to export its PART_NUMBER separately.

Additionally, it also adds juno part number.

Change-Id: I2b1d5f5b65a9c7b76c6f64480cc7cf0aef019422

include/plat/arm/css/common/css_def.h
plat/arm/board/juno/juno_def.h

index 43d1c54f72a1df08bf5f9b4ee27d4fd57eb4e18b..256f0d8d8fd288e163aa8ffb8a0efb1373310284 100644 (file)
                                                CSS_DEVICE_SIZE,        \
                                                MT_DEVICE | MT_RW | MT_SECURE)
 
+/* Platform ID address */
+#define SSC_VERSION_OFFSET                     0x040
+
+#define SSC_VERSION_CONFIG_SHIFT               28
+#define SSC_VERSION_MAJOR_REV_SHIFT            24
+#define SSC_VERSION_MINOR_REV_SHIFT            20
+#define SSC_VERSION_DESIGNER_ID_SHIFT          12
+#define SSC_VERSION_PART_NUM_SHIFT             0x0
+#define SSC_VERSION_CONFIG_MASK                        0xf
+#define SSC_VERSION_MAJOR_REV_MASK             0xf
+#define SSC_VERSION_MINOR_REV_MASK             0xf
+#define SSC_VERSION_DESIGNER_ID_MASK           0xff
+#define SSC_VERSION_PART_NUM_MASK              0xfff
+
+#ifndef __ASSEMBLY__
+
+/* SSC_VERSION related accessors */
+
+/* Returns the part number of the platform */
+#define GET_SSC_VERSION_PART_NUM(val)                          \
+               (((val) >> SSC_VERSION_PART_NUM_SHIFT) &        \
+               SSC_VERSION_PART_NUM_MASK)
+
+/* Returns the configuration number of the platform */
+#define GET_SSC_VERSION_CONFIG(val)                            \
+               (((val) >> SSC_VERSION_CONFIG_SHIFT) &          \
+               SSC_VERSION_CONFIG_MASK)
+
+#endif /* __ASSEMBLY__ */
 
 /*************************************************************************
  * Required platform porting definitions common to all
index 1f367f274d38e67ed56ea451d51c387ab69c9c04..f4e225996d1aa8912e798cfad9b51d1dd52d5d56 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved.
+ * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -50,6 +50,7 @@
 #define PSRAM_BASE                     0x14000000
 #define PSRAM_SIZE                     0x02000000
 
+#define JUNO_SSC_VER_PART_NUM          0x030
 
 /*******************************************************************************
  * TZC-400 related constants